#ifndef __CARGADOR_ALUMNOS_H__
#define __CARGADOR_ALUMNOS_H__

#include <string>
#include <fstream>

#include "Lista.h"
#include "alumno.h"

class CargadorAlumnos {

private:

	std::ifstream *archivo;
	Lista<Alumno*>* listaAlumnos;

	/**
	* Postcondiciones: Carga la lista de alumnos en listaAlumnos.
	*/
	void cargarAlumnos();

	/**
	* Postcondiciones: Retorna un Alumno*, o NULL si la linea es invalida.
	*/
	Alumno* generarAlumno(std::string linea);

public:

	/**
	 * Precondicione: El archivo debe exisitir.
	 * Postcondiciones: El cargador queda creado con el archivo pasado.
	 *                  Si falla al abrir el archivo arroja una excepcion.
	 */
	CargadorAlumnos(std::string archivo);

	/**
	* Postcondiciones: Se destruye el cargador y se cierra el archivo.
	*                  La lista de alumnos no es eliminada.
	*/
	~CargadorAlumnos();

	/**
	* Postcondiciones: Retorna un puntero a una lista con los alumnos leidos
	*                  del archivo.
	*/
	Lista<Alumno *>* getListaAlumnos();


};

#endif /* __CARGADOR_ALUMNOS_H__ */

